package com.uzai.console.service.user;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.uzai.console.dto.TbUserInfo.TbUserInfoIdDto;
import com.uzai.console.dto.TbUserInfo.TbUserInfoQuery;
import com.uzai.console.dto.TbUserInfo.TbUserInfoUpdateDto;
import com.uzai.console.dto.user.UserUpdateMarketingTagDto;
import com.uzai.console.dto.user.app.*;
import com.uzai.console.dto.user.useraccdetail.UserAccDetailQuery;
import com.uzai.console.vo.tbuserinfo.TbUserInfoVo;
import com.uzai.console.vo.user.app.AppUserInfoVo;
import com.uzai.console.vo.user.app.AppUserPageVo;
import com.uzai.console.vo.user.useraccdetail.UserAccDetailInfoVo;

/**
 * The interface App user service.
 *
 * @author liuqi
 * @date 2021年08月25日 20:17
 */
public interface AppUserService {
    /**
     * 分页查询微信用户列表
     *
     * @param appUserQuery the wechat user query
     * @return null page
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Page<AppUserPageVo> findWechatUserList(AppUserQuery appUserQuery);

    /**
     * 分页查询下级用户列表
     *
     * @param findSonUserListQuery the find son user list query
     * @return null page
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Page<AppUserPageVo> findSonUserList(AppFindSonUserListQuery findSonUserListQuery);

    /**
     * 查询微信用户详情
     *
     * @param wechatUserIdDto the wechat user id dto
     * @return null wechat user info vo
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    AppUserInfoVo findWechatUserInfo(AppUserIdDto wechatUserIdDto);

    /**
     * 根据单个机器人群发消息(异步)
     *
     * @param wechatUserBatchSendMsgDto the wechat user batch send msg dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Integer groupSendMsgByDeviceUniqueId(AppUserBatchSendMsgDto wechatUserBatchSendMsgDto);

    /**
     * (多选框选择会员)根据单个机器人群发消息(异步)
     *
     * @param wechatUserSendMsgBatchDto the wechat user send msg batch dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Integer groupSendMsgByDeviceUniqueIdBatch(AppUserSendMsgBatchDto wechatUserSendMsgBatchDto);

    /**
     * 删除用户信息
     *
     * @param id    the id
     * @param merId the mer id
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void deleteUserById(Long id, Long merId);

    /**
     * 删除下级用户信息(不删会员，只清除上下级关系)
     *
     * @param wechatUserDeleteSonDto the wechat user delete son dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void deleteSonWechatUser(AppUserDeleteSonDto wechatUserDeleteSonDto);

    /**
     * 分页查询微信用户账户明细列表
     *
     * @param wechatUserAccDetailQuery the wechat user acc detail query
     * @return null page
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Page<UserAccDetailInfoVo> findWechatUserAccDetailList(UserAccDetailQuery wechatUserAccDetailQuery);

    /**
     * 分页查询用户会员渠道ID列表
     *
     * @param tbUserInfoQuery the tb user info query
     * @return null page
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    Page<TbUserInfoVo> findTbUserInfoList(TbUserInfoQuery tbUserInfoQuery);

    /**
     * 修改会员渠道ID
     *
     * @param tbUserInfoUpdateDto the tb user info update dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateTbUserInfo(TbUserInfoUpdateDto tbUserInfoUpdateDto);

    /**
     * 删除会员渠道ID
     *
     * @param tbUserInfoIdDto the tb user info id dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void deleteTbUserInfo(TbUserInfoIdDto tbUserInfoIdDto);

    /**
     * 修改微信用户积分余额
     *
     * @param wechatUserUpdateBalanceDto the wechat user update balance dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateWechatUserBalance(AppUserUpdateBalanceDto wechatUserUpdateBalanceDto);

    /**
     * 修改微信用户定向比例
     *
     * @param wechatUserUpdatePriRewardRulesDto the wechat user update pri reward rules dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateWechatUserPriRewardRules(AppUserUpdatePriRewardRulesDto wechatUserUpdatePriRewardRulesDto);

    /**
     * 修改微信用户会员标签
     * @author liuqi
     * @date 2021/8/25 11:38
     * @param userUpdateMarketingTagDto
     * @return null
     */
    void updateSysTags(UserUpdateMarketingTagDto userUpdateMarketingTagDto);

    /**
     * 加入黑名单
     *
     * @param wechatUserAddBlackDto the wechat user add black dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void addBlackUser(AppUserAddBlackDto wechatUserAddBlackDto);

    /**
     * 修改微信用户详情信息
     *
     * @param wechatUserInfoUpdateDto the wechat user info update dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateWechatUserInfo(AppUserInfoUpdateDto wechatUserInfoUpdateDto);

    /**
     * 用户发送消息
     *
     * @param wechatUserSendMsgDto the wechat user send msg dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void sendMessageToOneUser(AppUserSendMsgDto wechatUserSendMsgDto);

    /**
     * 单个用户修改信息
     *
     * @param wechatUserUpdateDto the wechat user update dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateToOneUser(AppUserUpdateDto wechatUserUpdateDto);

    /**
     * 单个用户定投筛选
     *
     * @param wechatUserOptCpcDto the wechat user opt cpc dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void optCpcToOneUser(AppUserOptCpcDto wechatUserOptCpcDto);

    /**
     * 更新微信信息
     *
     * @param wechatUserIdDto the wechat user id dto
     * @return null wechat user info vo
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    AppUserInfoVo updateUserInfoFromWechat(AppUserIdDto wechatUserIdDto);


    /**
     * 修改互通的公众号会员的公众号
     *
     * @param updateWxpubUserDto the update wxpub user dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateInterflowWxpubUser(AppUpdateWxpubUserDto updateWxpubUserDto);

    /**
     * 清除会员的互通信息
     *
     * @param cleanUserUnionIdDto the clean user union id dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void cleanUserUnionId(AppCleanUserUnionIdDto cleanUserUnionIdDto);

    /**
     * 修改会员订阅信息
     *
     * @param updateSubscribeInfoDto the update subscribe info dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateSubscribeInfo(AppUpdateSubscribeInfoDto updateSubscribeInfoDto);

    /**
     * 修改会员营销奖励信息
     *
     * @param updateMarketingRewardDto the update marketing reward dto
     * @return null
     * @author liuqi
     * @date 2021 /8/25 11:38
     */
    void updateMarketingReward(AppUpdateMarketingRewardDto updateMarketingRewardDto);


}
